package com.cn.map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * Map遍历
 * 1. 使用entrySet()遍历：效率最高
 * 2. 使用keySet()遍历
 * 3. 使用values()遍历（只遍历值，不遍历键）
 * 4. 使用forEach（Java 8及以上）
 * 5. 使用迭代器Iterator
 */
public class Map_03_Iteration {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"One");
        map.put(2,"Two");
        map.put(3,"Three");

        //1. 使用entrySet()遍历：效率最高
        System.out.println("1. 使用entrySet()遍历：效率最高");
        for(Map.Entry<Integer,String> entry : map.entrySet()){
            System.out.println("Key: " + entry.getKey() + ",Value: " + entry.getValue());
        }

        //2. 使用keySet()遍历
        System.out.println("2. 使用keySet()遍历");
        for(Integer key: map.keySet()){
            System.out.println("Key: "+key+",Value: " + map.get(key));
        }

        //3.使用values()遍历（只遍历值，不遍历键）
        System.out.println("3. 使用values()遍历（只遍历值，不遍历键）");
        for(String value: map.values()){
            System.out.println("Value: "+value);
        }

        //4.使用forEach（Java 8及以上）
        System.out.println("4. 使用forEach（Java 8及以上）");
        map.forEach((key,value)->{
            System.out.println("Key: "+key+",Value "+value);
        });

        //5.使用迭代器Iterator
        System.out.println("5.使用迭代器Iterator");
        Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry<Integer,String> entry = iterator.next();
            System.out.println("Key: "+entry.getKey()+",Value: "+entry.getValue());
        }
    }
}
